demand >order
demand catch
demand throw

supplied-by
wordlist constant execute-parsing-wordlist

get-current execute-parsing-wordlist set-current

\ X is prepended to the string, then the string is EVALUATEd
: X  ( xt -- )
   previous execute
   source >in ! drop       \ skip remaining input
; immediate         

set-current

: (exec-parsing)  ( ... xt u caddr -- ... )
   dup >r s" X " r> swap cmove
   tuck >r                          ( -- xt caddr u ) ( R: -- caddr )
   execute-parsing-wordlist >order
   ['] evaluate catch               ( -- )
   r> free throw throw
;

